package controller.consola;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import view.consola.*;
import modelo.*;

public class consola {
	
		static Controller controller;
		static boolean run = true;
		static ViewManager vManager;
		
		public static void main (String args[]) throws Exception {	
			
			Juego juego = Juego.getInstancia();
			vManager = new ViewManager(juego);
			
			setController(new IngresarController(juego));
			
			while(run){
				vManager.imprimir();
				controller.leer();
				
				if(juego.haTerminado()){
					setController(new FinController(juego));
				}
				
			}
		}
		
		public static void setController(Controller cont){
			controller = cont;
			vManager.clearViews();
			vManager.agregarViews(cont.getViews());
		}

		public static int getOpcionSeleccionada(int maximo) {
			
			int opcion = 0;
			
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			boolean valido = false;
			while(!valido){
				valido = true;

				try{
					String z = br.readLine();
					opcion = Integer.parseInt(z);
				}
				catch(NumberFormatException e){
					valido = false;
				} catch (IOException e) {
					valido = false;
				}
				
				if(opcion < 1 || opcion > maximo){
					valido = false;
				}
				
				if(!valido){
					System.out.println("Seleccione una opcion valida");
				}
			}
			
			return opcion;
		}
		
	public static String getString() {
			
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			boolean valido = false;
			String string = null;
			
			while(!valido){
				valido = true;

				try{
					string = br.readLine();
				}
				catch (IOException e) {
					System.out.println("Ingrese un texto valido");
					valido = false;
				}
			}
			
			return string;
		}
	
	public static void terminarJuego(){
		run = false;
	}


}
